package org.jsets.fastboot.oss.service;

import java.io.InputStream;
import java.util.List;
import org.jsets.fastboot.oss.model.dto.FileMetaQuery;
import org.jsets.fastboot.oss.model.entity.FileMeta;
import org.jsets.fastboot.oss.model.event.FileAccessEvent;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * service-文件
 * </p>
 * <p>
 * 继承自MyService（ Mybatis Support Service）
 * </p>
 * 
 * 
 * 
 * @author wangjie
 *
 */
public interface IFileMetaService extends IService<FileMeta> {
	
	Long insertFile(FileMeta metadata, InputStream data);
	
	/**
	 * 分页查询文件列表
	 */
	Page<FileMeta> selectPage(FileMetaQuery query);
	
	/**
	 * 查询文件列表
	 */
	List<FileMeta> selectList(FileMetaQuery query);
	
	/**
	 * 根据桶统计文件数量
	 */
	long selectCountByBucket(String bucketName);
	
	/**
	 * 根据应用名称统计文件数量
	 */
	long selectCountByAppName(String appName);
	
	InputStream getFileInputStream(FileMeta metadata);
	
	void updateAccessInfo(FileAccessEvent evt);
	
	void deleteFile(Long id);
	int batchDeleteFile(List<Long> ids);
	int deleteFileByBiz(String bizId);

	int updateRelations(List<Long> fileIds, String bizIdentifier);
}